import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

/**
 * 用户状态管理
 * 管理用户登录状态、用户信息等
 */
export const useUserStore = defineStore('user', () => {
  // 用户token（暂时注释掉实际使用）
  const token = ref(localStorage.getItem('token') || '')
  
  // 用户信息
  const userInfo = ref({
    id: '1001',
    username: 'testuser',
    nickname: '测试用户',
    avatar: 'https://img.yzcdn.cn/vant/cat.jpeg',
    phone: '13800138000',
    email: 'test@example.com',
    role: 'user',
    department: '基金监管部',
    position: '监管员'
  })

  // 是否已登录
  const isLoggedIn = computed(() => {
    // return !!token.value
    // 暂时返回true，跳过token验证
    return true
  })

  /**
   * 设置token
   * @param {string} newToken - 新的token
   */
  const setToken = (newToken) => {
    token.value = newToken
    localStorage.setItem('token', newToken)
  }

  /**
   * 设置用户信息
   * @param {object} info - 用户信息对象
   */
  const setUserInfo = (info) => {
    userInfo.value = { ...userInfo.value, ...info }
    localStorage.setItem('userInfo', JSON.stringify(userInfo.value))
  }

  /**
   * 登录
   * @param {object} loginData - 登录数据
   */
  const login = async (loginData) => {
    try {
      // 模拟登录API调用
      console.log('登录请求:', loginData)
      
      // 模拟返回的token和用户信息
      const mockToken = 'mock_token_' + Date.now()
      const mockUserInfo = {
        id: '1001',
        username: loginData.username || 'testuser',
        nickname: '测试用户',
        avatar: 'https://img.yzcdn.cn/vant/cat.jpeg',
        phone: '13800138000',
        email: 'test@example.com',
        role: 'user',
        department: '基金监管部',
        position: '监管员'
      }

      setToken(mockToken)
      setUserInfo(mockUserInfo)
      
      return { success: true, message: '登录成功' }
    } catch (error) {
      console.error('登录失败:', error)
      return { success: false, message: '登录失败' }
    }
  }

  /**
   * 登出
   */
  const logout = () => {
    token.value = ''
    userInfo.value = {}
    localStorage.removeItem('token')
    localStorage.removeItem('userInfo')
  }

  /**
   * 初始化用户信息
   */
  const initUserInfo = () => {
    const savedUserInfo = localStorage.getItem('userInfo')
    if (savedUserInfo) {
      try {
        userInfo.value = JSON.parse(savedUserInfo)
      } catch (error) {
        console.error('解析用户信息失败:', error)
      }
    }
  }

  /**
   * 更新用户资料
   * @param {object} profileData - 用户资料数据
   */
  const updateProfile = async (profileData) => {
    try {
      // 模拟更新用户资料API调用
      console.log('更新用户资料:', profileData)
      
      setUserInfo(profileData)
      
      return { success: true, message: '更新成功' }
    } catch (error) {
      console.error('更新用户资料失败:', error)
      return { success: false, message: '更新失败' }
    }
  }

  return {
    // 状态
    token,
    userInfo,
    isLoggedIn,
    
    // 方法
    setToken,
    setUserInfo,
    login,
    logout,
    initUserInfo,
    updateProfile
  }
})